package cn.iocoder.yudao.module.member.service.studentCurriculumVitae;

import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.api.studentCurriculumVitae.dto.StudentCurriculumVitaeRespDTO;
import cn.iocoder.yudao.module.member.controller.admin.student.vo.StudentExcel;
import cn.iocoder.yudao.module.member.controller.admin.student.vo.StudentFileVO;
import cn.iocoder.yudao.module.member.controller.admin.student.vo.StudentPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.studentCurriculumVitae.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.student.StudentDO;
import cn.iocoder.yudao.module.member.dal.dataobject.studentCurriculumVitae.StudentCurriculumVitaeDO;
import cn.iocoder.yudao.module.member.dal.dataobject.studentCurriculumVitae.StudentFileDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 用户简历 Service 接口
 *
 * @author 周枫皓
 */
public interface StudentCurriculumVitaeService {

    /**
     * 创建用户简历
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createStudentCurriculumVitae(@Valid StudentCurriculumVitaeCreateReqVO createReqVO);

    /**
     * 更新用户简历
     *
     * @param updateReqVO 更新信息
     */
    void updateStudentCurriculumVitae(@Valid StudentCurriculumVitaeUpdateReqVO updateReqVO);

    void updateByStudentId(StudentCurriculumVitaeUpdateReqVO updateReqVO);

    /**
     * 删除用户简历
     *
     * @param id 编号
     */
    void deleteStudentCurriculumVitae(Long id);

    /**
     * 获得用户简历
     *
     * @param id 编号
     * @return 用户简历
     */
    StudentCurriculumVitaeDO getStudentCurriculumVitae(Long id);

    /**
     * 获得用户简历列表
     *
     * @param ids 编号
     * @return 用户简历列表
     */
    List<StudentCurriculumVitaeDO> getStudentCurriculumVitaeList(Collection<Long> ids);

    /**
     * 获得用户简历分页
     *
     * @param pageReqVO 分页查询
     * @return 用户简历分页
     */
    PageResult<StudentCurriculumVitaeDO> getStudentCurriculumVitaePage(StudentCurriculumVitaePageReqVO pageReqVO);


    /**
     * 获得用户简历列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 用户简历列表
     */
    List<StudentCurriculumVitaeDO> getStudentCurriculumVitaeList(StudentCurriculumVitaeExportReqVO exportReqVO);


    List<StudentCurriculumVitaeExcelVO> exportStudentCurriculumVitaeExcel(StudentCurriculumVitaeExportReqVO exportReqVO);
    /**
     * 获得用户简历
     *
     * @param studentId 编号
     * @return 用户简历
     */
   List<StudentCurriculumVitaeDO> getStudentCurriculumVitaeByStudentId(Long studentId);


    StudentCurriculumVitaeRespDTO getStudentInfoByMobile(Long projectId, String mobile);

    List<StudentExcel> exportStudent(List<StudentDO> list);

    void saveStudentFile( StudentFileDO request);

    PageResult<StudentFileVO> getStudentFileList(StudentPageReqVO pageReqVO);
}
